Pentagonal numbers are generated by the formula, $P_n=n(3n−1)/2$. The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that $P_4 + P_7 = 22 + 70 = 92 = P_8$. However, their difference, $70 - 22 = 48$, is not pentagonal.
Find the pair of pentagonal numbers, $P_j$ and $P_k$, for which their sum and difference are pentagonal and $D = |P_k − P_j|$ is minimised; what is the value of D?
In [1]:
def search():
N = 10000
penta = [n*(3*n-1)//2 for n in range(1, N+1)]
penta_set = set(penta)
Pn = penta[N-1]
for i in range(1, N):
D = penta[i]
for j in range(i):
Pj = penta[j]
Pk = Pj + D
S = Pj + Pk
if S > Pn:
print("Fail")
return
if Pk in penta_set and S in penta_set:
print(D)
return
search()
In [ ]: